#ifndef _HEAD_DRAGON_H
#define _HEAD_DRAGON_H

#include "Object.h"
#include "RedDragonWeapon.h"

#define HEAD_DRAGON_VX			0.05
#define HEAD_DRAGON_VY			1.5
#define HEAD_DRAGON_GRAVITY		0.005
#define HEAD_DRAGON_DISTANCE_X			100

/************************************************************************/
/* Head Dragon Enemy Class                                               */
/************************************************************************/

class HeadDragon : public Object
{
private:
	bool is_turn_left;

	float count_time;
	float timeDie;

	Sprite* p_light;

	//Weapon
	RedDragonWeapon* weapon;

	//Direct
	LPDIRECT3DDEVICE9 d3ddv;
	LPDIRECT3DSURFACE9 BackBuffer;
	LPD3DXSPRITE SpriteHandler;

public:

	/*
	 *	get/set properties
	 */
	OBJECT_TYPE getObjectType();

	/*
	 *	constructor/destructor
	 */	
	HeadDragon(LPDIRECT3DDEVICE9 d3ddv,  LPDIRECT3DSURFACE9 BackBuffer, LPD3DXSPRITE SpriteHandler, float x, float y, int ID, int Object_State, int Direction);
	~HeadDragon();

	/*
	 *	Method
	 */
	void turnLeft();
	void turnRight();

	void move(list<Object*>* obj_list, float TPF);
	void move(list<Object*>* obj_list, float TPF, Object* simon);

	void update(list<Object*>* obj_list, DxInput* input, float TPF);
	void update(list<Object*>* obj_list, DxInput* input, float TPF, Object* simon);

	void render(int cameraX, int cameraY);
	void changeState(int state);
};

#endif